package com.moli.iov.admin.service;

import com.moli.iov.admin.model.vo.req.AlarmHandlingVo;
import com.moli.iov.admin.model.vo.req.AlarmInfoHandlerRecordReqVo;
import com.moli.iov.admin.model.vo.req.AlarmVo;
import com.moli.iov.alarm.model.dto.res.AlarmInfoResDto;
import com.moli.iov.model.dto.req.PageExtend;
import com.moli.iov.rest.RestResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * <p>
 * 告警管理
 * </p>
 *
 * @author zql
 * @since 2019/5/27 13:59
 */
public interface IAlarmFacadeService {

    /**
     * 报警列表
     * @param alarmVo
     * @return
     */
    PageExtend<AlarmInfoResDto> listPageAlarmInfo(AlarmVo alarmVo);

    /**
     * 报警详情  电子围栏报警
     * @param alarmVo
     * @return
     */
    RestResponse<AlarmInfoResDto> getAlarmInfo(AlarmVo alarmVo);

    /**
     * 忽略报警
     * @param alarmVo
     * @return
     */
    RestResponse ignore(AlarmVo alarmVo);

    /**
     * 车辆失联报警 导出
     * @param alarmVo
     * @param request
     * @param res
     */
    void offLineExport(AlarmVo alarmVo, HttpServletRequest request,
        final HttpServletResponse res) throws Exception;

    /**
     * 车载终端报警 导出
     * @param alarmVo
     * @param request
     * @param res
     */
    void terminalExport(AlarmVo alarmVo, HttpServletRequest request,
        final HttpServletResponse res) throws Exception;

    /**
     * 电子围栏报警下载
     * @param alarmVo
     * @param request
     * @param res
     * @throws Exception
     */
    void fenceExport(AlarmVo alarmVo, HttpServletRequest request,
        final HttpServletResponse res) throws Exception;

    /**
     * 里程异变报警 列表
     * @param alarmVo
     * @return
     */
    PageExtend<AlarmInfoResDto> listMileageException(AlarmVo alarmVo);

    /**
     * 里程异变报警 导出
     * @param alarmVo
     * @param request
     * @param res
     */
    void mileageExceptionExport(AlarmVo alarmVo, HttpServletRequest request,
        final HttpServletResponse res) throws Exception;

    /**
     * 里程异变处理 审核
     * @param alarmVo
     */
    RestResponse meAudit(AlarmVo alarmVo);

    /**
     * 失联报警 处理
     * @param vo
     * @return
     */
    RestResponse alarmHandling(AlarmHandlingVo vo);

    /**
     * 得到报警详情
     * @param vo
     * @return
     */
    RestResponse getAlarmInfoHandlerRecordList(AlarmInfoHandlerRecordReqVo vo);
}
